﻿//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.Windows;
//using System.Windows.Controls;
//using System.Windows.Data;
//using System.Windows.Documents;
//using System.Windows.Input;
//using System.Windows.Media;
//using System.Windows.Media.Imaging;
//using System.Windows.Navigation;
//using System.Windows.Shapes;
//using Yugi.Client.WebSerive;
//using Yugi.Client.ViewModel;
//using Yugi.Client;
//using Yugi_Gui.Util_Control;
//using Yugi_Gui.COntrol;

//namespace Yugi_Gui
//{
//    /// <summary>
//    /// Interaction logic for RoomLayout.xaml
//    /// </summary>
//    public partial class RoomLayout001 : UserControl , IInvoke
//    {
//        MainServerHandler mainserver;
//        WebServiceCommunication cm= new WebServiceCommunication();
//        RoomModel model;
//        public RoomLayout001()
//        {
//            this.InitializeComponent();
//            this.Loaded += new RoutedEventHandler(RoomLayout_Loaded);
//            this.CreateRoom.OnClick += new Action<object>(create_OnClick);
//            this.deck.OnClick += new Action<object>(deck_OnClick);
//            this.AutoFind.OnClick += new Action<object>(AutoFind_OnClick);
//        }

//        void AutoFind_OnClick(object obj)
//        {
//            try
//            {
//                int RoomID = this.list_room.GetRoomRandom().ID;
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_JoinRoom, RoomID);
//            }
//            catch(Exception e)
//            {
//                MessageBox.Show(e.Message);
//            }
//        }

//        void UpdateFriend(object obj)
//        {
//            Action<Object> tmp = (o) =>
//            {
//                this.list_friend.Delete(0);
//                List<PlayerInfo> list = o as List<PlayerInfo>;
//                foreach (var item in list)
//                {
//                    this.list_friend.AddUser(item);
//                }
//                this.status.Text = "Complete";
//            };
//            cm.UpdateListFriendAsync(this, tmp, mainserver.Login_Model.UserID);
//            this.status.Text = "Loading.........";
//        }
        
//        //void test_updateroom()
//        //{
//        //    try
//        //    {
//        //        this.list_room.Delete(0);
//        //        List<RoomInfo> temp = new List<RoomInfo>();
//        //        temp = cm.UpdateListRoom(mainserver.Current_Room_ID);
//        //        foreach (var item in temp)
//        //        {
//        //            this.list_room.AddRoom(item);
//        //        }
//        //    }
//        //    catch (Exception e)
//        //    {
//        //        // MessageBox.Show(e.Message);
//        //    }
//        //}
//        void UpdateRoom(object obj)
//        {
//            Action<Object> tmp = (o) =>
//            {
//                this.list_room.Delete(0);
//                List<RoomInfo> list = o as List<RoomInfo>;
//                foreach (var item in list)
//                {
//                    this.list_room.AddRoom(item);
//                }
//                this.status.Text = "Complete";
//            };
//            cm.UpdateListRoomAsync(this, tmp);
//            this.status.Text = "Loading.........";
//        }

//        void RoomLayout_Loaded(object sender, RoutedEventArgs e)
//        {

//            mainserver = ((Window)(this.Parent)).DataContext as MainServerHandler;
//            model = mainserver.Room_Model;
//            model.Presenter = this;
//            this.list_room.OnChoice += new Action<object>(list_room_OnChoice);
//            this.list_friend.OnChoice += new Action<object>(list_user_OnChoice);
//            this.list_friend.ContexMenu += new Action<object, object>(list_friend_ContexMenu);
//            if (mainserver.Current_Room_ID != -1)
//            {
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_OutRoom, mainserver.Current_Room_ID);
//                mainserver.Current_Room_ID = -1;
//            }
//            Action<Object> tmp = (o) =>{
//                this.list_room.Delete(0);
//                List<RoomInfo> list = o as List<RoomInfo>;
//                foreach (var item in list)
//                {
//                    this.list_room.AddRoom(item);
//                }
//                this.status.Text = "Complete";
//            };
            
//            cm.SetAuth("yugioh", "admin123");
//            cm.UpdateListRoomAsync(this, tmp);
//            UpdateFriend(null);
            
//            this.status.Text = "Loading.........";

//            //test vcn
//            mainserver.ChatManager_Model.Added += new Action<string, string>(creat_OnAdd);
//            ListUser listuser = new ListUser(mainserver);
//            listuser.AddCanvas(LayoutRoot);
//            // vcn test channel
//            ChannelControl Channel_Control = new ChannelControl(mainserver);
//            Channel_Control.AddCanvas(LayoutRoot, 600, 0);
//        }

//        void list_friend_ContexMenu(object obj1, object obj2)
//        {
//            PlayerInfo playerinfo = (PlayerInfo)obj1;
//            MenuItem mi = (MenuItem)obj2;
//            if (playerinfo == null || mi == null)
//                return;
//            if (mi.Name == "goto_room")
//            {
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_JoinRoomF, (int)playerinfo.ID);
//            }
//            else if (mi.Name == "chat")
//            {
//                //do something
//            }
//        }
        
//        void creat_OnAdd(string from, string to)
//        {
//            ChatControl chatcontrol = new ChatControl(mainserver,false);
//            chatcontrol.Add(LayoutRoot);
//        }

//        void list_user_OnChoice(object obj)
//        {
//            PlayerInfo tmp = obj as PlayerInfo;
//            if (tmp != null)
//            {
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_JoinRoomF, (int)tmp.ID);
//            }
//            else
//                LayoutManager.LayoutManager.Insitance.ChangeToLayout(LayoutManager.LayoutType.Room001);
//        }

//        void create_OnClick(object obj)
//        {
//            mainserver.SendMessageToServer(Common.MSG_GSM.L_CreateRoom, txt_RoomName.Text);   
//        }

//        void list_room_OnChoice(object obj)
//        {
//            RoomInfo tmp = obj as RoomInfo;
//            if (tmp == null)
//                LayoutManager.LayoutManager.Insitance.ChangeToLayout(LayoutManager.LayoutType.Room001);
//            else
//            {
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_JoinRoom, (int)tmp.RoomID);
//                this.mainserver.Current_Room_ID = (int)tmp.RoomID;
//            }
//        }
//        void deck_OnClick(object obj)
//        {
//            LayoutManager.LayoutManager.Insitance.ChangeToLayout(LayoutManager.LayoutType.Deck);
//        }
        
//        #region IInvoke Members

//        public void Do(ClientMSG msg, params object[] obj)
//        {
//            switch(msg)
//            {
//                case ClientMSG.CreateRoom_OK:
//                    LayoutManager.LayoutManager.Insitance.ChangeToLayout(LayoutManager.LayoutType.Room001);
//                    break;
//                case ClientMSG.JoinRoom_OK:
//                    this.mainserver.Current_Room_ID = (int)obj[0];
//                    LayoutManager.LayoutManager.Insitance.ChangeToLayout(LayoutManager.LayoutType.Room);
//                    break;
//            }
//        }

//        public void Refresh()
//        {
//            if (mainserver.Current_Room_ID != -1)
//            {
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_OutRoom, mainserver.Current_Room_ID);
//                mainserver.Current_Room_ID = -1;
//            }
//            UpdateRoom(null);
//        }
//        #endregion

//        internal void GameLayout_Unloaded()
//        {
//            try
//            {
//                mainserver.SendMessageToServer(Common.MSG_GSM.L_OutRoom, mainserver.Current_Room_ID);

//            }
//            catch (Exception ex)
//            {
//            }
//        }
//    }
//}